package util;

import java.io.File;
import java.util.Map;

import javazoom.jlgui.basicplayer.BasicController;
import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerEvent;
import javazoom.jlgui.basicplayer.BasicPlayerException;
import javazoom.jlgui.basicplayer.BasicPlayerListener;

public class Reproductor implements BasicPlayerListener{
	
	private BasicPlayer basicPlayer;
	private double bytesLength;

	public Reproductor() {
	basicPlayer = new BasicPlayer();
	basicPlayer.addBasicPlayerListener(this);
	}

	public void play() {
	try {
	basicPlayer.play();
	} catch (BasicPlayerException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	}
	}

	public void stop() {
	try {
	basicPlayer.stop();
	} catch (BasicPlayerException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	}
	}

	public void pause() {
	try {
	basicPlayer.pause();
	} catch (BasicPlayerException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	}
	}

	public void resume() {
	try {
	basicPlayer.resume();
	} catch (BasicPlayerException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	}
	}

	public void loadFile(String ruta) throws BasicPlayerException {
		basicPlayer.open(new File(ruta));
	}

	/**
	* Necesario por implementar BasicPlayerListener. Es ejecutado una vez se
	* carga un fichero. En este caso, obtiene el tamaño en bytes del fichero.
	*/
	public void opened(Object arg0, Map arg1) {
	if (arg1.containsKey("audio.length.bytes")) {
	bytesLength = Double.parseDouble(arg1.get("audio.length.bytes")
	.toString());
	}
	}

	/**
	* Necesario por implementar BasicPlayerListener. Según la documentación,
	* este método es llamado varias veces por segundo para informar del
	* progreso en la reproducción.
	*/
	public void progress(int bytesread, long microseconds, byte[] pcmdata,
	Map properties) {
	float progressUpdate = (float) (bytesread * 1.0f / bytesLength * 1.0f);
	int progressNow = (int) (bytesLength * progressUpdate);
	// Descomentando la siguiente línea se mosrtaría el progreso
	}

	public void setController(BasicController arg0) {
	// TODO Auto-generated method stub

	}

	public void stateUpdated(BasicPlayerEvent arg0) {
	// TODO Auto-generated method stub

	}
	
	public static void main(String[] args){
		
		try{
			Reproductor reproductor = new Reproductor();
			reproductor.loadFile("lib//sonidos//Bajo.mp3");
			reproductor.play();
			
			}catch(Exception e){
				
				
			}
		
		
	}
	

}
